package com.kk.xhr.admin.biz;

import com.kk.xhr.admin.controller.request.PermissionAddRequest;
import com.kk.xhr.admin.controller.request.PermissionModifyRequest;
import com.kk.xhr.admin.controller.vo.PermissionTreeVO;
import com.kk.xhr.common.pojo.BinaryEnum;

import java.util.List;

/**
 * 权限biz服务接口
 *
 * @author kkmystery
 * @version 1.0 2021/3/13
 * @since 1.0.0
 */
public interface IPermissionBizService {

    /**
     * 查询权限树
     *
     * @param id 主键id
     * @return 权限树
     */
    PermissionTreeVO query(Long id);

    /**
     * 根据角色id查询权限树
     *
     * @param roleId 角色id
     * @return 权限id列表
     */
    List<Long> queryPermissionByRole(Long roleId);

    /**
     * 添加权限
     *
     * @param request PermissionAddRequest
     * @return 主键id
     */
    Long add(PermissionAddRequest request);

    /**
     * 修改权限
     *
     * @param id      主键id
     * @param request PermissionModifyRequest
     * @return 是否成功
     */
    boolean modify(Long id, PermissionModifyRequest request);

    /**
     * 修改权限状态
     *
     * @param id     主键id
     * @param status 状态
     * @return 是否成功
     */
    boolean modifyStatus(Long id, BinaryEnum status);

    /**
     * 为角色添加或修改权限
     *
     * @param roleId 角色id
     * @param ids    权限列表
     */
    void upsertToRole(Long roleId, List<Long> ids);
}
